1. Field of Invention
The present invention relates to a data processing method for a context formation module and an arithmetic encoder. More particularly, the present invention relates to a data processing method for a context formation module and an arithmetic encoder in an embedded block coding with optimized truncation (EBCOT) module.
2. Description of Related Art
In recent years, networks are increasingly more popular, and images, audio, and other multimedia data are getting bigger and bigger. So, the new compression technology for those data becomes very important.
JPEG2000 image compression technology is a new international image compression standard and also the latest image encoding technology after JPEG. The JPEG2000 image compression technology also provides higher resolutions. Moreover, it further has several advantages such as a high compression rate, supporting lossy and lossless compression, progressive transmission, and region-of-interest coding. For entropy coding, embedded block coding with optimized truncation (EBCOT) is used in JPEG2000 rather than the VLC/VLD in JPEG. Since the scalable encoding of EBCOT enables progressive transmission and bandwidth adaptation, EBCOT is used to achieve the optimized image quality.
In EBCOT, the most important parts are the context formation (CF) and the arithmetic encoder (AE). The CF module is used to process each bit within a code-block sequentially to generate the context and decision pairs, rather than to compress the data. In the CF module, each bit is checked and coded, and its context is generated according to the status of its neighbors. On the other hand, the arithmetic encoder is used to encode each bit according to the contexts, and output the bit-streams of each compressed code-block data.
Regarding the CF module data processing method in the prior art, each bit is inputted continuously and a first-in first-out (FIFO) buffer is placed between the CF module and the arithmetic encoder. But it is not good enough. If the CF module cannot generate the valid context and decision pairs continuously, the arithmetic encoder cannot encode the data efficiently. Besides, if the CF module outputs too many context and decision pairs at a time, an additional FIFO buffer has to be placed between the CF module and the arithmetic encoder to temporarily store the context and decision pairs which can not be processed immediately. In this method, the CF module cannot have a valid output in each clock cycle, so the optimal performance cannot be attained. Moreover, the capacity of the FIFO buffer has to be big enough so that the production cost must be increased. For the forgoing reasons, there is a need for solving problems with a new data processing method for the CF module.
FIG. 1 is a schematic view showing a four-stage pipelined arithmetic encoder in the prior art. The arithmetic encoder can be partitioned into two parts, (1) the probability estimation (PE), and (2) the calculation and the normalization of the 16-bit A-register and 28-bit C-register, and index and MPS updating (IMU) as well. In order to shorten the critical path, the C-register is usually divided into two parts, a 16-bit C-register and a 12-bit C-register, respectively. Because the arithmetic encoder is a key of EBCOT, the pipelined architecture for the arithmetic encoder is a necessary technique to speed up the performance.
In the pipelined architecture of the arithmetic encoder, if the context and decision pairs are processed continuously in one coding pass, the normalization operation of the 16-bit A-register has to be performed immediately. Because the data is random, generating the context and decision pairs in the same coding pass cannot be avoided, even the data are processed under the pass parallel mode. In this situation, if the calculation and the normalization operation are performed during different pipeline stages, the 16-bit A-register will not complete the normalization operation in time. Thus, a bubble is needed between two successive inputs, meaning that one clock cycle has to be wasted when using this method. Although a look-ahead approach is adopted to solve the problem, it is too complicated. So the problem is definitely the bottleneck for the arithmetic encoder. For the forgoing reasons, there is a need for solving problems with a new data processing method for the arithmetic encoder, so as to speed up the arithmetic encoder and cut down the production cost.